﻿using AccesoDatos.Interfaces;

namespace AccesoDatos.Fabricas
{
    /// <summary> Clase que hace de fabrica para todas las fabrica de la implemtacion de los daos </summary>
    public abstract class FabricaDao
    {
        /// <summary> Metodo que obtiene las instancia de la fabrica a operar </summary>
        /// <param name="manejador">el tipo de fabrica</param>
        /// <returns></returns>
        public static FabricaDao ObtenerFabrica(TipoFabrica manejador)
        {
            switch (manejador)
            {
                case TipoFabrica.Mysql:
                    return null;

            }
            return null;
        }

        #region Metodos Abstractos
        
        /// <summary> Metodo que obtiene el dao para la entidad aseguradora </summary>
        /// <returns>IDaoAseguradora Instanciado</returns>
        public abstract IDaoAseguradora ObtenerDaoAseguradora();


        /// <summary> Metodo que obtiene el dao para la entidad ciudad </summary>
        /// <returns>IDaoCiudad Instanciado</returns>
        public abstract IDaoCiudad ObtenerDaoCiudad();


        /// <summary> Metodo que obtiene el dao para la entidad cliente </summary>
        /// <returns>IDaoCliente Instanciado</returns>
        public abstract IDaoCliente ObtenerDaoCliente();


        /// <summary> Metodo que obtiene el dao para la entidad detalleestimado </summary>
        /// <returns>IDaoDetalleEstimado Instanciado</returns>
        public abstract IDaoDetalleEstimado ObtenerDaoDetalleEstimado();


        /// <summary> Metodo que obtiene el dao para la entidad estado </summary>
        /// <returns>IDaoEstado Instanciado</returns>
        public abstract IDaoEstado ObtenerDaoEstado();


        /// <summary> Metodo que obtiene el dao para la entidad inspeccion </summary>
        /// <returns>IDaoInspeccion Instanciado</returns>
        public abstract IDaoInspeccion ObtenerDaoInspeccion();


        /// <summary> Metodo que obtiene el dao para la entidad personal </summary>
        /// <returns>IDaoPersonal Instanciado</returns>
        public abstract IDaoPersonal ObtenerDaoPersonal();


        /// <summary> Metodo que obtiene el dao para la entidad poliza </summary>
        /// <returns>IDaoPoliza Instanciado</returns>
        public abstract IDaoPoliza ObtenerDaoPoliza();


        /// <summary> Metodo que obtiene el dao para la entidad ramo </summary>
        /// <returns>IDaoRamo Instanciado</returns>
        public abstract IDaoRamo ObtenerDaoRamo();


        /// <summary> Metodo que obtiene el dao para la entidad recaudo </summary>
        /// <returns>IDaoRamo Instanciado</returns>
        public abstract IDaoRecaudo ObtenerDaoRecaudo();


        /// <summary> Metodo que obtiene el dao para la entidad recaudoInspeccion </summary>
        /// <returns>IDaoRecaudoInspeccion Instanciado</returns>
        public abstract IDaoRecaudoInspeccion ObtenerDaoRecaudoInspeccion();


        /// <summary> Metodo que obtiene el dao para la entidad siniestro </summary>
        /// <returns>IDaoSiniestro Instanciado</returns>
        public abstract IDaoSiniestro ObtenerDaoSiniestro();


        /// <summary> Metodo que obtiene el dao para la entidad sucursal </summary>
        /// <returns>IDaoSucursal Instanciado</returns>
        public abstract IDaoSucursal ObtenerDaoSucursal();


        /// <summary> Metodo que obtiene el dao para la entidad tipo de siniestro </summary>
        /// <returns>IDaoTipoSiniestro Instanciado</returns>
        public abstract IDaoTipoSiniestro ObtenerDaoTipoSiniestro();

        #endregion


    }
}
